ORA | 您所在的位置:网站首页 › oracle的group by语句是不是有毛病 › ORA |
问题
对于常见在select中出现的列没有全部出现在group by的后面这种原因就不再进行细说了,现说下我碰到的比较特殊的情况。在Oracle的11.2.0.1.0版本上执行下面语句报ORA-00979不是GROUP BY表达式错误 select substr(a.empno,1,4) as year,count(1) from (select * from scott.emp) a group by substr(a.empno,1,4) order by substr(a.empno,1,4) desc;但是换成下面两种方式就没用问题: 方式1 不使用子查询 select substr(a.empno,1,4) as year,count(1) from scott.emp a group by substr(a.empno,1,4) order by substr(a.empno,1,4) desc; 方式2 order by 中使用别名 select substr(a.empno,1,4) as year,count(1) from (select * from scott.emp) a group by substr(a.empno,1,4) order by year desc; 总结个人分析,是因为Oracle的11.2.0.1.0版本不支持:在使用子查询且有group by 的情况下,对order by里的字段不使用别名。所以以后在写sql的时候尽量规范化,即order by 后面尽量使用别名。注:本人使用11.2.0.4.0版本时,并未碰到上面的问题,故推测是11.2.0.1.0版本问题,可通过升级oracle版本进行测试。 |
CopyRight 2018-2019 实验室设备网 版权所有 |